.org 0x802fec6
mov r1, #0xa ;Vulnerary heal amount

.org 0x8019430
ldr r2, Label
mov r1, #0xff

.org 0x8019440
Label:
.long 0x859a5d0

Hack:

.org 0x80193de
nop
ldr r0, [pc] ;0x0048
bx r0 ;0x0047
.long 0x8590c29

.org 0x8590c28
ldr r0, [sp, #0x8]
push {r4}
ldr r4, ReturnCheck
cmp r0, r4
pop {r4}
bne Skip:
mov r4, #0x99
lsl r4, r4, #0x8
add r4, #0x9a
mul r4, r1
lsr r4, r4, #0x11
ldrb r1, [r5, #0x13]
add r4, r4, r1
ldrb r1, [r5, #0x12]
cmp r4, r1
ble Skip
mov r4, r1
Skip:
strb r4, [r5, #0x13]
pop {r4-r5}
pop {r0}
bx r0
ReturnCheck:
.long 0x802f3a1

.org 0x80191a6
add r0, r0, r1 ;r0=max health; modify r0 to change what elixirs heal to

Hack:

.org 0x801936c
ldr r4, [pc] ;0x004c
bx r4 ;0x2047
.long 0x8590c59

.org 0x8590c58
mov r4, #0x99
lsl r4, r4, #0x8
add r4, #0x9a
mul r4, r1
lsr r4, r4, #0x10
ldrb r5, [r0, #0x13]
add r4, r5, r4
cmp r4, r1
ble Skip
mov r4, r1
Skip:
strb r4, [r0, #0x13]
ldr r4, Return
mov lr, r4
mov r4, #0x13
ldrh r4, [r0, r4]
push {r4-r6, lr}
ldr r6, Target
bx r6
Return:
.long 0x8019377
Target:
.long 0x8016b2b
.org 0x8590c84

r4=character data base address in RAM at the above PC

Space for custom healing routines at 0x8590C28